package com.ruoyi.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 【患者信息】对象 labinfo_item_data
 *
 * @author ruoyi
 * @date 2023-07-01
 */
@Data
public class LabinfoItemData extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long outId; //外部id
    /** $column.columnComment */
    private Long id;

    /** 报告审核时间 */
    @Excel(name = "报告审核时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date reportCheckTime;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private String itemType;

    /** 公司主体 */
    @Excel(name = "公司主体")
    private String companyBody;

    /** 送检单位名称 */
    @Excel(name = "送检单位名称")
    private String sjdwName;

    /** 收样区域 */
    @Excel(name = "收样区域")
    private String syArea;

    /** 产品英文简写 */
    @Excel(name = "产品英文简写")
    private String sampleDecWay;

    /** 送检单编号 */
    @Excel(name = "送检单编号")
    private String sampleSerialNumber;

    /** 送检码 */
    @Excel(name = "送检码")
    private String sampleBoxCode;

    /** 收费样本数量 */
    @Excel(name = "收费样本数量")
    private String chargeNum;

    /** 样本总数量 */
    @Excel(name = "样本总数量")
    private String wholeNum;

    /** 送检医生 */
    @Excel(name = "送检医生")
    private String sjys;

    /** 销售员 */
    @Excel(name = "销售员")
    private String saleman;

    /** 是否外送 */
    @Excel(name = "是否外送")
    private String isAway;

    /** 回款方式 */
    @Excel(name = "回款方式")
    private String cashType;

    /** 订单来源 */
    @Excel(name = "订单来源")
    private String orderSource;

    /** 业务类型 */
    @Excel(name = "业务类型")
    private String bussinessType;

    /** 受检人姓名 */
    @Excel(name = "受检人姓名")
    private String patientName;

    /** 受检人性别 */
    @Excel(name = "受检人性别")
    private String patientSex;

    /** 受检人年龄 */
    @Excel(name = "受检人年龄")
    private String patientAge;

    /** 受检人染色体 */
    @Excel(name = "受检人染色体")
    private String patientChromosome;

    /** 受检人核型 */
    @Excel(name = "受检人核型")
    private String patientKaryotype;

    /** 受检人电话 */
    @Excel(name = "受检人电话")
    private String patientPhone;

    /** 配偶姓名 */
    @Excel(name = "配偶姓名")
    private String mateName;

    /** 配偶性别 */
    @Excel(name = "配偶性别")
    private String mateSex;

    /** 配偶年龄 */
    @Excel(name = "配偶年龄")
    private String mateAge;

    /** 配偶染色体 */
    @Excel(name = "配偶染色体")
    private String mateChromosome;

    /** 配偶核型 */
    @Excel(name = "配偶核型")
    private String mateKaryotype;

    /** 采样日期 */
    @Excel(name = "采样日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date getSampleDate;

    /** 样本状态 */
    @Excel(name = "样本状态")
    private String sampleStatus;

    /** 医生是否签字确认 */
    @Excel(name = "医生是否签字确认")
    private String isConfirm;

    /** 患者是否签字 */
    @Excel(name = "患者是否签字")
    private String isSign;

    /** 送检单信息是否完整 */
    @Excel(name = "送检单信息是否完整")
    private String isWhole;

    /** 运输状态 */
    @Excel(name = "运输状态")
    private String sendStatus;

    /** 温度 */
    @Excel(name = "温度")
    private String temperature;

    /** 其他染色体,核型信息 */
    @Excel(name = "其他染色体,核型信息")
    private String otherChromosome;

    /** 女方母亲核型 */
    @Excel(name = "女方母亲核型")
    private String karyotypeWMo;

    /** 女方父亲核型 */
    @Excel(name = "女方父亲核型")
    private String karyotypeWFa;

    /** 男方母亲核型 */
    @Excel(name = "男方母亲核型")
    private String karyotypeMMo;

    /** 男方父亲核型 */
    @Excel(name = "男方父亲核型")
    private String karyotypeMFa;

    @Excel(name = "检测进度", dictType = "m_report_schedule")
    private String reportSchedule;

    @Excel(name = "lims实验项目阶段")
    private String limsSchedule;


    /** 报告链接 */
    @Excel(name = "报告链接")
    private String reportAddress;

    /** 报告生成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "报告生成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatereportDate;

    /** 默认N，Y有报告，P已解析 */
    @Excel(name = "默认N，Y有报告，P已解析")
    private String reportStatus;

    /** 报告文件名 */
    @Excel(name = "报告文件名")
    private String reportNames;

    /** 删除状态，0-正常，1-删除（停用） */
    @Excel(name = "删除状态，0-正常，1-删除", readConverterExp = "停=用")
    private Long isDelete;

    private List<LabinfoSampleData> sampleList;


    //新增字段
    private Long deptId;
    //是否已分享 1 是，0 否
    private String isShare;
    //被分享人的id
    private String sharedId;
    //被分享数据集合
    private Long[] ids;

    private String caseId;//病例ID

    @JsonFormat(pattern = "yyyy-MM-dd")
    private String inputDate;//录入时间

    private String expressNo;//快递单号

    private String logistics;//物流

    /** 收样日期 */
    @Excel(name = "收样日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date receiveSampleDate;

    /** 收样日期 */
    @Excel(name = "预出报告日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date reportingDate;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;


    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTime;

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("reportCheckTime", getReportCheckTime())
                .append("itemType", getItemType())
                .append("companyBody", getCompanyBody())
                .append("sjdwName", getSjdwName())
                .append("syArea", getSyArea())
                .append("sampleDecWay", getSampleDecWay())
                .append("sampleSerialNumber", getSampleSerialNumber())
                .append("sampleBoxCode", getSampleBoxCode())
                .append("chargeNum", getChargeNum())
                .append("wholeNum", getWholeNum())
                .append("sjys", getSjys())
                .append("saleman", getSaleman())
                .append("isAway", getIsAway())
                .append("cashType", getCashType())
                .append("orderSource", getOrderSource())
                .append("bussinessType", getBussinessType())
                .append("patientName", getPatientName())
                .append("patientSex", getPatientSex())
                .append("patientAge", getPatientAge())
                .append("patientChromosome", getPatientChromosome())
                .append("patientKaryotype", getPatientKaryotype())
                .append("patientPhone", getPatientPhone())
                .append("mateName", getMateName())
                .append("mateSex", getMateSex())
                .append("mateAge", getMateAge())
                .append("mateChromosome", getMateChromosome())
                .append("mateKaryotype", getMateKaryotype())
                .append("getSampleDate", getGetSampleDate())
                .append("sampleStatus", getSampleStatus())
                .append("isConfirm", getIsConfirm())
                .append("isSign", getIsSign())
                .append("isWhole", getIsWhole())
                .append("sendStatus", getSendStatus())
                .append("temperature", getTemperature())
                .append("otherChromosome", getOtherChromosome())
                .append("karyotypeWMo", getKaryotypeWMo())
                .append("karyotypeWFa", getKaryotypeWFa())
                .append("karyotypeMMo", getKaryotypeMMo())
                .append("karyotypeMFa", getKaryotypeMFa())
                .append("reportAddress", getReportAddress())
                .append("updatereportDate", getUpdatereportDate())
                .append("reportStatus", getReportStatus())
                .append("reportNames", getReportNames())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("isDelete", getIsDelete())
                .toString();
    }
}
